package com.bblocks.mall.client;

import com.dtflys.forest.annotation.*;
import com.bblocks.communityInfo.client.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * https://forest.dtflyx.com/docs/adv/interceptor
 */
public interface MallClient {

    @Request("http://localhost:8080/hello")
    String helloForest();

    /**
     * 商品查询（solr）
     * @param curPageNO
     * @param pageSize
     * @param parms
     * @return
     */
    //@Post("#{bblocks_mall_base}/productsearch/search/prodlist?curPageNO={curPageNO}&pageSize={pageSize}")
    //SearchResultDto prodlist(@Var("curPageNO")Integer curPageNO, @Var("pageSize")Integer pageSize, @JSONBody ProductSearchParms parms);

    /**
     * 商品查询（appuser），默认20条（pageSize 暂时不生效）
     * @param curPageNO
     * @param parms
     * @return
     */
    @Post("#{bblocks_mall_base}/portalapp/appSearch/prodlist?curPageNO={curPageNO}")
    ResultDto<AppPageSupport<AppProdDto>> prodlist(@Var("curPageNO")Integer curPageNO, @Body ProductSearchParms parms);


    /**
     * 店铺分类
     * @param shopId
     * @return
     */
    @Post("#{bblocks_mall_base}/portalapp/shop/prodCategory/{shopId}")
	ResultDto<List<AppShopProdCategoryDto>> prodCategory(@Var("shopId")Integer shopId);

    /**
     * 查询全部有效的开团
     * @param curPageNO
     * @param pageSize
     * @param shopId
     * @return
     */
    @Post("#{bblocks_mall_base}/portalapp/app/mergeGroup/list?curPageNO={curPageNO}&pageSize={pageSize}&shopId={shopId}")
    ResultDto<AppPageSupport<AppMergeGroupDto>> mergeGroup(@Var("curPageNO")Integer curPageNO, @Var("pageSize")Integer pageSize, @Var("shopId")Long shopId);

    /**
     *
     * @param shopId
     * @return
     */
    @Post("#{bblocks_mall_base}/portalapp/shop/info/{shopId}")
    ResultDto<AppShopIndexDto> shopInfo(@Var("shopId")Long shopId);

    /**
     * 店铺品牌
     * @param shopId
     * @return
     */
    @Post("#{bblocks_mall_base}/portalapp/shopBrandList?shopId={shopId}")
    ResultDto<List<BrandDto>> shopBrandList(@Var("shopId")Long shopId);

    /**
     * 开通店铺
     * 入参需要token  eg:Bearer d10388a1-8241-478d-82f9-0045afaea642 (样式:Bearer+空格+token)
     * @return 返回店铺id(shopId)
     */
    @Post("#{bblocks_mall_base}/portalapp/p/openCompanyShopInfo")
    ResultDto<Long> openCompanyShopInfo(@Header("Authorization") String token);



	/**
	 * 查询当前用户的店铺商品
	 * @param yz_shopId 入参需要 shopId
	 * @param curPageNO 分页从1开始
	 * @param status 商品状态：0 仓库中的商品、1 出售中的商品、2 违规商品、3 待审核的商品、 4 审核失败的商品、5 是否分销商品、 -1 回收站的商品、-2 商家永久删除的商品 ,允许空
	 * @param prodName 产品名称
	 * @return
	 */
	@Post("#{bblocks_mall_base}/appbiz/s/productList")
	ResultDto<AppPageSupport<AppBizProdDto>> shopProductList(@Header("yz_shopId") Integer yz_shopId
			,@Query("curPageNO")String curPageNO, @Query("status") Integer status, @Query("prodName")String prodName);


	/**
	 * 修改产品状态
	 * @param productIds 产品id
	 * @param status 商品状态：0 下线商品（仓库中的商品）、1 上线商品（出售中的商品）、-1 删除商品（回收站的商品）
	 * @return
	 */
	@Post("#{bblocks_mall_base}/appbiz/s/updateProdStatus")
	ResultDto<String> updateProdStatus(@Header("yz_shopId") Integer yz_shopId
			,@Query("productIds") Long[] productIds,@Query("status")Integer status) ;
}
